package cn.iocoder.yudao.module.dr.controller.admin.collectionmanagement.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 藏品三维采集 Excel 导入 VO - 索引方案
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false)
@ExcelIgnoreUnannotated
public class Collection3dImportIndexVO {

    // ========== 第一部分：藏品关键信息 ==========
    @Schema(description = "藏品总登记号")
    @ExcelProperty(index = 0)
    private String generalAccessionNumber;

    @Schema(description = "名称")
    @ExcelProperty(index = 1)
    private String collectionName;

    @Schema(description = "数量")
    @ExcelProperty(index = 2)
    private Integer collectionNum;

    @Schema(description = "成果名称")
    @ExcelProperty(index = 3)
    private String resultName;

    @Schema(description = "文件格式")
    @ExcelProperty(index = 4)
    private String fileFormat;

    // ========== 第二部分：加工成果数据信息 ==========
    @Schema(description = "加工日期")
    @ExcelProperty(index = 5)
    private LocalDateTime processingDate;

    @Schema(description = "加工单位")
    @ExcelProperty(index = 6)
    private String processingUnit;

    @Schema(description = "加工人")
    @ExcelProperty(index = 7)
    private String processor;

    @Schema(description = "加工成果质量检查人")
    @ExcelProperty(index = 8)
    private String qualityInspector;

    @Schema(description = "文件大小(M)")
    @ExcelProperty(index = 9)
    private BigDecimal fileSize;

    @Schema(description = "模型精度(mm)")
    @ExcelProperty(index = 10)
    private BigDecimal modelAccuracy;

    @Schema(description = "贴图分辨率(dpi)")
    @ExcelProperty(index = 11)
    private String textureResolution; // 注意：Excel中是"600ppi"，改为String类型

    // ========== 第三部分：三维扫描点云数据采集 ==========
    @Schema(description = "采集单位")
    @ExcelProperty(index = 12)
    private String scanAcquisitionUnit;

    @Schema(description = "采集地点")
    @ExcelProperty(index = 13)
    private String scanAcquisitionLocation;

    @Schema(description = "采集日期")
    @ExcelProperty(index = 14)
    private LocalDateTime scanAcquisitionDate;

    @Schema(description = "采集人员")
    @ExcelProperty(index = 15)
    private String scanAcquisitionPersonnel;

    @Schema(description = "采集设备品牌型号")
    @ExcelProperty(index = 16)
    private String scanEquipmentModel;

    @Schema(description = "文件格式")
    @ExcelProperty(index = 17)
    private String scanFileFormat;

    @Schema(description = "模型精度(mm)")
    @ExcelProperty(index = 18)
    private BigDecimal scanModelAccuracy;

    @Schema(description = "采集质量检查人")
    @ExcelProperty(index = 19)
    private String scanAcquisitionInspector;

    // ========== 第四部分：摄影测量纹理数据采集 ==========
    @Schema(description = "采集单位")
    @ExcelProperty(index = 20)
    private String photoAcquisitionUnit;

    @Schema(description = "采集地点")
    @ExcelProperty(index = 21)
    private String photoAcquisitionLocation;

    @Schema(description = "采集日期")
    @ExcelProperty(index = 22)
    private String photoAcquisitionDate; // 注意：Excel中是"20250619"，改为String类型

    @Schema(description = "采集人员")
    @ExcelProperty(index = 23)
    private String photoAcquisitionPersonnel;

    @Schema(description = "采集设备品牌型号")
    @ExcelProperty(index = 24)
    private String photoEquipmentModel;

    @Schema(description = "文件格式")
    @ExcelProperty(index = 25)
    private String photoFileFormat;

    @Schema(description = "采集影像总数(张)")
    @ExcelProperty(index = 26)
    private BigDecimal totalImages; // 注意：Excel中是"31.6"等小数，改为BigDecimal

    @Schema(description = "采集质量检查人")
    @ExcelProperty(index = 27)
    private String photoAcquisitionInspector;

    @Schema(description = "分辨率(dpi)")
    @ExcelProperty(index = 28)
    private String resolution; // 注意：Excel中是"5000万"，改为String类型
}